/*
    sip_str.c 

*/
#include "sip_str.h"

#include <stdlib.h>
#include <string.h>
#include <stdio.h>


void sip_str_init(Sip_string *str)
{
	str->len = 0;
	str->size = 1200;
	str->str = malloc(str->size);
    memset(str->str, 0, str->size);
}
void sip_strn_append (Sip_string *dst, const char *src, int len)
{
	if((len+dst->len) < dst->size)
	{
		int destlen = dst->len+len;
		strncat(dst->str, src, len);
		dst->len=destlen;
		dst->str[destlen] = '\0';
	}else
	{
		dst->size = dst->size+len;
		char *str = malloc(dst->size);	
		strncpy(str, dst->str, dst->len);
		strncat(str, src, len);
		dst->len += len;
		free(dst->str);
		dst->str = str;
	}
}
void sip_str_append(Sip_string *dst, const char *src)
{
	sip_strn_append(dst, src, strlen(src));
}
void sip_str_append_CRLF(Sip_string *dst)
{
    sip_strn_append(dst, "\r\n", 2);
}
void sip_str_append_int(Sip_string *dst, int num)
{
    char buf[5]={0};
    snprintf(buf, sizeof(buf), "%d", num);
	sip_strn_append(dst, buf, 4);
}

void sip_str_free(Sip_string *str)
{
	free(str->str);
}

